package spacegame;
/**
 * ------------------------------------------------------------ 
 * Artifact
 * ADT implementation public static Artifact create (Coord, String) public
 * Coord position () public String name () public Artifact move (int, int)
 * public String toString () public boolean equals (Artifact) public
 * boolean equals (Object) public int hashCode ()
 * ------------------------------------------------------------
 * @author Pucella
 */
 class Artifact {
  private Coord  position;
  private String name;
  
  private Artifact(Coord p, String n) {
    position = p;
    name = n;
  }
  
  public static Artifact create(Coord p, String n) {
    return new Artifact(p, n);
  }
  
  public Coord position() {
    return this.position;
  }
  
  public String name() {
    return this.name;
  }
  
  public Artifact move(int dx, int dy) {
    return this.create(this.position().move(dx, dy), this.name());
  }
  
  public String toString() {
    return this.name() + this.position().toString();
  }
  
  public int hashCode() {
    return this.position().hashCode() + this.name().hashCode();
  }
  
  public boolean equals(Artifact a) {
    return (this.position().equals(a.position()) && this.name()
                                                        .equals(a.name()));
  }
  
  public boolean equals(Object o) {
    return false;
  }
  
  public static Artifact star(Coord create, String string) {
    // TODO Auto-generated method stub
    return null;
  }
  
  public static Artifact base(Coord create, String string, int i) {
    // TODO Auto-generated method stub
    return null;
  }
  
  public static Artifact ship(Coord create, String string, int i) {
    // TODO Auto-generated method stub
    return null;
  }
  
  public static Artifact planet(Coord create, String string) {
    // TODO Auto-generated method stub
    return null;
  }
  
  public char display() {
    // TODO Auto-generated method stub
    return 0;
  }
  
  public Option<Movable> movable() {
    // TODO Auto-generated method stub
    return null;
  }
  
  public Option<Energized> energized() {
    // TODO Auto-generated method stub
    return null;
  }
}
